import { UILogicActiveContainerParam } from './ui-logic-active-container-param';
import { UILogicActiveCtrlParam } from './ui-logic-active-ctrl-param';
import { UILogicActiveViewParam } from './ui-logic-active-view-param';
import { UILogicAppGlobalParam } from './ui-logic-app-global-param';
import { AppDeUILogicAppParam } from './ui-logic-app-param';
import { UILogicCtrlParam } from './ui-logic-ctrl-param';
import { AppDeUILogicEntityListParam } from './ui-logic-entity-list-param';
import { AppDeUILogicEntityPageParam } from './ui-logic-entity-page-param';
import { AppDeUILogicEntityParam } from './ui-logic-entity-param';
import { AppDeUILogicFilterParam } from './ui-logic-filter-param';
import { AppDeUILogicLastReturnParam } from './ui-logic-last-return-param';
import { UILogicNavContextParam } from './ui-logic-nav-context-param';
import { UILogicNavViewParam } from './ui-logic-nav-view-param';
import { UILogicParamBase } from './ui-logic-param-base';
import { UILogicRouteViewSessionParam } from './ui-logic-route-view-session-param';
import { AppDeUILogicSimpleListParam } from './ui-logic-simple-list-param';
import { AppDeUILogicSampleParam } from './ui-logic-simple-param';
import { UILogicViewNavDataParam } from './ui-logic-view-navdata-param';
import { UILogicViewSessionParam } from './ui-logic-view-session-param';

export class UILogicParamService {
	/**
	 * 获取界面逻辑参数实例
	 *
	 * @static
	 * @param {*} actionSession 操作会话
	 * @param {*} model 模型
	 * @memberof UILogicParamService
	 */
	public static getLogicParamInstance(
		actionSession: any,
		model: any,
		params: any
	) {
		const inputParam = { actionSession, model, params };
		// 应用程序变量
		if (model.applicationParam) {
			return new AppDeUILogicAppParam(inputParam);
		}
		// 当前容器对象
		if (model.activeContainerParam) {
			return new UILogicActiveContainerParam(inputParam);
		}
		// 当前部件对象
		if (model.activeCtrlParam) {
			return new UILogicActiveCtrlParam(inputParam);
		}
		// 指定部件对象
		if (model.ctrlParam) {
			return new UILogicCtrlParam(inputParam);
		}
		// 当前视图对象
		if (model.activeViewParam) {
			return new UILogicActiveViewParam(inputParam);
		}
		// 简单数据变量
		if (model.simpleParam) {
			return new AppDeUILogicSampleParam(inputParam);
		}
		// 逻辑数据对象参数
		if (model.entityParam) {
			return new AppDeUILogicEntityParam(inputParam);
		}
		// 数据对象列表变量
		if (model.entityListParam) {
			return new AppDeUILogicEntityListParam(inputParam);
		}
		// 上一次调用返回变量
		if (model.lastReturnParam) {
			return new AppDeUILogicLastReturnParam(inputParam);
		}
		// 简单数据列表变量
		if (model.simpleListParam) {
			return new AppDeUILogicSimpleListParam(inputParam);
		}
		// 分页查询结果变量
		if (model.entityPageParam) {
			return new AppDeUILogicEntityPageParam(inputParam);
		}
		// 应用全局参数绑定参数
		if (model.appGlobalParam) {
			return new UILogicAppGlobalParam(inputParam);
		}
		// 过滤器
		if (model.filterParam) {
			return new AppDeUILogicFilterParam(inputParam);
		}
		// 导航上下文绑定参数
		if (model.navContextParam) {
			return new UILogicNavContextParam(inputParam);
		}
		// 导航视图参数绑定参数
		if (model.navViewParamParam) {
			return new UILogicNavViewParam(inputParam);
		}
		// 顶级视图会话共享参数绑定参数
		if (model.routeViewSessionParam) {
			return new UILogicRouteViewSessionParam(inputParam);
		}
		// 导航数据参数绑定参数
		if (model.viewNavDataParam) {
			return new UILogicViewNavDataParam(inputParam);
		}
		// 当前视图会话共享参数绑定参数
		if (model.viewSessionParam) {
			return new UILogicViewSessionParam(inputParam);
		}
		return new UILogicParamBase(inputParam);
	}
}
